Ext.define('Ext.unibase.role.RoleMainPanel', {
	extend : 'Ext.panel.Panel',
	initComponent : function() {
		
		var onAddClick = function() {
			var addWin = Ext.create('Ext.unibase.role.RoleAddWin');
			addWin.show();
		};

		var onDeleteClick = function() {
			
			var data = roleGrid.getSelectionModel().getSelection();//数据行
			
			if (data.length === 0) {
				Ext.MessageBox.show({
					title : "提示",
					msg : "请先选择您要删除的行!",
					width:300,
					buttons :Ext.MessageBox.OK,
					icon: Ext.MessageBox.INFO
				});		
			}else{
				
				Ext.Msg.confirm("请确认", "是否真的要删除数据？", function(button, text) {
					
					if (button == "yes") {//确认
						
						var ids = [];//id集合
						
						Ext.Array.each(data, function(record) {
							
							var id=record.get('id');//角色id
							
							//如果删除的是幻影数据，则id就不传递到后台了，直接在前台删除即可
							if(id){
								ids.push(id);
							}									
						});
						
						//ajax提交
						Ext.Ajax.request({
							url : 'role/delete',
							params : {
								deleteIds : ids.join(',')
							},
							method : 'POST',
							success : function(response, opts) {
								
								var success = Ext.decode(response.responseText).success;//成功标识true
								var info = Ext.decode(response.responseText); //操作成功信息
								
								//当后台数据删除操作成功时
								if (success) {
									
									Ext.Array.each(data, function(record) {
										roleStore.remove(record);//页面效果												
									});
									
									Ext.MessageBox.show({
                                    	title:"删除成功", //标题
                                       	msg:info.text,	//提示信息
                                       	width:300, 		//窗体宽度
                                       	buttons: Ext.MessageBox.OK, //确定按钮
                                       	icon :Ext.MessageBox.INFO   //成功的图标
                        			});
								}else{
									Ext.MessageBox.show({
										title : "提示",
										msg:"删除失败",
										width:300,
										buttons :Ext.MessageBox.OK,
										icon: Ext.MessageBox.ERROR //失败的图标
									});											
								}
							}
						});
					}
				});
			}
		};

		var onEditClick = function() {
			
			if(roleGrid.getSelectionModel().hasSelection()){//选择
			
				var records = roleGrid.getSelectionModel().getSelection();//数据行
				
				if(records.length === 1){//选择一行
					
					var record = records[0];//数据记录
					
		           	var editWin = Ext.create('Ext.unibase.role.RoleEditWin');		
				
					editWin.down('form').loadRecord(record);//加载数据
					editWin.show();//显示窗体
					
		        }else{//选择多行
					Ext.MessageBox.show({
		            	title :'提示信息',
		               	msg :"只能选择一条记录进行修改！",
		               	width:300,
		               	buttons :Ext.MessageBox.OK,
		               	icon :Ext.MessageBox.INFO
		           	});
				}
			}else{//未选择
				Ext.MessageBox.show({
	            	title :'提示信息',
	               	msg :"请选择一条记录进行修改！",
	               	width:300,
	               	buttons :Ext.MessageBox.OK,
	               	icon :Ext.MessageBox.INFO
	           	});
			}
		};

		var roleStore = Ext.create('Ext.data.Store', {
			storeId : "roleStore",
			autoLoad : {
				start : 0,
				limit : 20
			},
			pageSize : 20,
			fields : [ 'id', 'name', 'comments', 'opTime', 'opUserName' ],
			proxy : {
				type : 'ajax',
				url : 'role/page',
				reader : {
					type : 'json',
					root : 'list',
					totalProperty : 'total'
				}
			}
		});
		var roleGrid = Ext.create('Ext.grid.Panel', {
			title : '角色信息列表',
			region : 'center',
			store : roleStore,
			forceFit : true,
			columns : [ {
				text : 'ID',
				hidden : true,
				dataIndex : 'id'
			}, {
				text : '名称',
				dataIndex : 'name',
				menuDisabled : true,
				sortable : false
			}, {
				text : '注释',
				dataIndex : 'comments',
				menuDisabled : true,
				sortable : false
			}, {
				text : '操作时间',
				dataIndex : 'opTime',
				menuDisabled : true,
				sortable : false
			}, {
				text : '操作人',
				dataIndex : 'opUserName',
				menuDisabled : true,
				sortable : false
			} ],
			dockedItems : [ {
				xtype : 'pagingtoolbar',
				store : roleStore,
				dock : 'bottom',
				displayInfo : true
			}, {
				xtype : 'toolbar',
				dock : 'top',
				items : [ '->', {
					iconCls : 'icon-add',
					text : '新增',
					scope : this,
					handler : onAddClick
				}, '-', {
					iconCls : 'icon-edit',
					text : '修改',
					scope : this,
					handler : onEditClick
				}, '-', {
					iconCls : 'icon-delete',
					text : '删除',
					scope : this,
					handler : onDeleteClick
				} ]
			} ],
			listeners : {
				itemclick : function(view,record,item){
					moduleStore.load({
						params:{
							id:record.get("id")
						}
					});
				}
			}
		});
		
		var moduleStore = Ext.create('Ext.data.TreeStore', {
			proxy : {
				type : 'ajax',
				url : 'role/roleModule'
			},
			clearOnLoad : true,
			nodeParam : 'id'
		});
		
		var modulePanel = Ext.create('Ext.tree.Panel', {
		    title: '模块树',
		    region : 'west',
		    split : true,
		    collapsible : true,
		    width: 200,
		    store: moduleStore,
			rootVisible : false,
			
			listeners : {
		    	checkchange : function(node,checked){
		    		Ext.Ajax.request({
						url : 'role/check',
						params : {
							"role.id" : roleGrid.getSelectionModel().getSelection()[0].data.id,
							"module.id" : node.get("id"),
							"checked":checked
						},
						method : 'POST',
						success : function(response, opts) {
							
						}
					});
		    	}
		    }
		});
		
		Ext.apply(this, {
			layout : 'border',
			items : [ roleGrid , modulePanel ]
		});
		this.callParent();
	}
});